// Global vars
var button_enviar_e;
var button_limpiar_e;
var button_imprimir_todo_e;
var button_imprimir_proveedor_e;
var DataStore_e;
var txt_nombre_e;
var	txt_descripcion_e;
var txt_codigobarras_e;
var	txt_familia_e;
var var_id_producto_e=-1;
var store_familia_e;
var	combo_familia_e;
var	txt_precio_venta_e;

Ext.require([
    'Ext.grid.*',
    'Ext.data.*',
    'Ext.util.*',
    'Ext.state.*',
	'Ext.window.MessageBox',
    'Ext.tip.*'
]);

Ext.onReady(function(){

	Ext.QuickTips.init();
	
	Ext.define('modelo_columnas', {
        extend: 'Ext.data.Model',
        fields: [ 
            {name: 'Id_producto', type: 'int', mapping: 'Id_producto'},
			{name: 'nombre', type: 'string', mapping: 'nombre'},
			{name: 'descripcion', type: 'string', mapping: 'descripcion'},
			{name: 'Id_familia', type: 'int', mapping: 'Id_familia'},
			{name: 'codigo_barras', type: 'string', mapping: 'codigo_barras'},
			{name: 'existencia', type: 'float', mapping: 'existencia'},
			{name: 'precio_venta', type: 'float', mapping: 'precio_venta'}
		]
    });
	
	DataStore_e = new Ext.data.Store({
					model: 'modelo_columnas',
					id: 'DataStore_e',
					proxy: {
								type: 'ajax',
								url : 'db_producto.php',            
								actionMethods: {
											read: 'POST'
								},
								extraParams: {
											task: 'LISTING',
								},
								reader: {
											root: 'results',
											totalProperty: 'total',
											id: 'id'
								}
					}
	});
	
	DataStore_e.load({params: {start: 0, limit: 20}});
	
	function crearNuevoRegistro()
	{		
			if(isFormValid())
			{				
					Ext.Ajax.request({
									waitMsg: 'Espere...',
									url: 'db_producto.php',
									params: {
												task: "CREATE",
												txt_nombre_e: 		txt_nombre_e.getValue(),
												txt_descripcion_e: 	txt_descripcion_e.getValue(),
												id_familia:			combo_familia_e.getValue(),
												txt_codigobarras_e:	txt_codigobarras_e.getValue(),
												txt_precio_venta_e:	txt_precio_venta_e.getValue()
											}, 
										success: function(response)
										{
											var result=eval(response.responseText);
											switch(result)
											{
												case 1:
														Ext.MessageBox.alert('Registro OK','Se creo el producto');
														limpiarpantalla();
														break;
												default:
														Ext.MessageBox.alert('Error','Error en la BD');
														break;									 
											}
										},
									failure: function(response)
									{			  
										var result=response.responseText;
										Ext.MessageBox.alert('Error','No se pudo conectar a la base de datos. Intenta nuevamente');
									}
					});				
			}
			else
			{
				Ext.MessageBox.alert('Error','Error en los datos');
			}
	}
	
	
	function updateRegistro()
	{		
		  	if(isFormValid())
			{
					Ext.Ajax.request({
									waitMsg: 'Espere...',
									url: 'db_producto.php',
									params: {
												task: "UPDATE",
												id_producto:		var_id_producto_e,
												txt_nombre_e: 		txt_nombre_e.getValue(),
												txt_descripcion_e: 	txt_descripcion_e.getValue(),
												id_familia:			combo_familia_e.getValue(),
												txt_codigobarras_e:	txt_codigobarras_e.getValue(),
												txt_precio_venta_e:	txt_precio_venta_e.getValue()
											}, 
										success: function(response)
										{
											var result=eval(response.responseText);
											switch(result)
											{
												case 1:
														Ext.MessageBox.alert('Registro OK','Se Actualizo informacion del producto');
														limpiarpantalla();
														break;
												default:
														Ext.MessageBox.alert('Error','No se tiene acceso... Error en la BD');
														break;									 
											}
										},
									failure: function(response)
									{			  
										var result=response.responseText;
										Ext.MessageBox.alert('Error','No se pudo conectar a la base de datos. Intenta nuevamente');
									}
					});
			}
			else
			{
				Ext.MessageBox.alert('Error','Error en los datos');
			}
	}
	
	
	function isFormValid()
	{
		return(	txt_descripcion_e.isValid() && 
				txt_nombre_e.isValid());
	}
	
	function limpiarpantalla()
	{
		txt_nombre_e.setValue("");
		txt_descripcion_e.setValue("");
		txt_codigobarras_e.setValue("");
		txt_precio_venta_e.setValue("");		
		combo_familia_e.setValue("");
		var_id_producto_e=-1;
		DataStore_e.load({params: {start: 0, limit: 20}});
	}
	
	function imprimir_lista(){      
            win = window.open('./print_producto.php','Lista de Productos','height=400,width=600,resizable=1,scrollbars=1, menubar=1');
	}
	
	function imprimir_producto(){
			if(var_id_producto_e!=-1)
			{
				win = window.open("print_producto_individual.php?nombre="+txt_nombre_e.getValue()+
																"&descripcion="+txt_descripcion_e.getValue()+
																"&familia="+combo_familia_e.getRawValue()+
																"&codigo_barras="+txt_codigobarras_e.getValue()+
																"&precio_venta="+txt_precio_venta_e.getValue(),
									'Kardex','height=400,width=600,resizable=1,scrollbars=1, menubar=1');
			}
	}
	
	
	button_enviar_e = new Ext.Button({width: 100,text: 'Crear',tooltip: 'Crear',handler:crearNuevoRegistro}); 
	button_update = new Ext.Button({width: 100,text: 'Actualizar',tooltip: 'Actualizar Registro',handler:updateRegistro}); 
	button_limpiar_e = new Ext.Button({width: 100,text: 'Limpiar',tooltip: 'Limpiar pantalla',handler:limpiarpantalla});
	button_imprimir_proveedor_e = new Ext.Button({width: 110,text: 'Imprimir producto',tooltip: 'Imprimir producto',handler:imprimir_producto}); 
	button_imprimir_todo_e = new Ext.Button({width: 100,text: 'Imprimir lista',tooltip: 'Imprimir lista',handler:imprimir_lista}); 
  	
    txt_nombre_e = new Ext.form.TextField
					({
							id: 			'txt_nombre_e',
							name:			'txt_nombre_e',
							fieldLabel: 	'Nombre',
							minLength: 		3,
							selectOnFocus:	true,
							blankText: 		'Nombre obligatorio',
							allowBlank: 	false,
							labelWidth:		160,
							width: 			500,
							tabIndex:		2,
					});
    
	txt_descripcion_e = new Ext.form.TextField
					({
							id: 			'txt_descripcion_e',
							name:			'txt_descripcion_e',
							fieldLabel:		'Descripcion',
							minLength: 		3,
							selectOnFocus: 	true,
							blankText: 		'Domicilio obligatorio',
							allowBlank: 	false,
							labelWidth:		160,
							width: 			550,
							tabIndex:		3,
					});
					
	
	
	// Definimos el modelo para obtener las familias
	Ext.regModel('familia', {
		fields: [
			{type: 'int', name: 'Id_familia'},
			{type: 'string', name: 'nombre'},
			{type: 'string', name: 'descripcion'}
		]
	});

	store_familia_e = new Ext.data.Store({
						model: 'familia',
						id: 'store_familia_e',
						proxy: {
									type: 'ajax',
									url : 'db_producto.php',            
									actionMethods: {
												read: 'POST'
									},
									extraParams: {
												task: 'LISTADO_FAMILIAS',
									},
									reader: {
												root: 'results',
												totalProperty: 'total',
												id: 'id'
									}
						}
	});
	
	// Simple ComboBox using the data store
	combo_familia_e = Ext.create('Ext.form.field.ComboBox', {
		fieldLabel: 'Familia',
		displayField: 'nombre',
		valueField: 'Id_familia',
		width: 500,
		labelWidth: 160,
		store: store_familia_e,
		queryMode: 'local',
		typeAhead: true,
		listeners: {
						focus: function()	{
									store_familia_e.load({params: {start: 0, limit: 20}});
						}
					}										
	});
	
	store_familia_e.load({params: {start: 0, limit: 20}});
	
	txt_familia_e = new Ext.form.TextField
					({
							id: 			'txt_familia_e',
							name:			'txt_familia_e',
							fieldLabel:		'Familia',
							minLength: 		3,
							selectOnFocus: 	true,
							blankText: 		'Familia obligatoria',
							allowBlank: 	false,
							labelWidth:		160,
							width: 			400,
							tabIndex:		3,
							enableKeyEvents: true,
							listeners: {
										change: function()	{
																alert("cambio");
															},
										keypress: function(t,e){
																	if(e.getKey()==13){
																		alert("intro");
																}
															}
								   }
					});
	
	txt_codigobarras_e = new Ext.form.TextField
					({
							id: 			'txt_codigobarras_e',
							name:			'txt_codigobarras_e',
							fieldLabel:		'Codigo de barras',
							minLength: 		3,
							selectOnFocus: 	true,
							blankText: 		'Codigo de barras obligatorio',
							allowBlank: 	false,
							labelWidth:		160,
							width: 			400,
							tabIndex:		3,
					});	
	
	
	txt_precio_venta_e = new Ext.form.TextField
					({
							id: 			'txt_precio_venta_e',
							name:			'txt_precio_venta_e',
							fieldLabel:		'Precio venta',
							minLength: 		1,
							selectOnFocus: 	true,
							blankText: 		'Cantidad a ingresar',
							allowBlank: 	false,
							labelWidth:		160,
							width: 			400,
							tabIndex:		1
					});	
						
	});
	
	
	
	
  
	